package com.ioufev.mqtt.utils;

/*
*
* 16进制数据解析
*
* */
public class DataParser {

    // 解析数据的方法
    public static float[] parseData(byte[] data, int index) {
        // 确保数据长度足够
        if (data.length < index + 16) {  // index + 15 + 1
            throw new IllegalArgumentException("数据长度不足，无法解析。需要长度至少为 " + (index + 16) + "，但实际长度为 " + data.length);
        }

        float[] result = new float[7];

        // 解析温度
        result[0] = ((data[index + 12] & 0xFF) + (data[index + 13] & 0xFF) / 100f);
        // 解析湿度
        result[1] = ((data[index + 14] & 0xFF) + (data[index + 15] & 0xFF) / 100f);
        // 解析二氧化碳
        result[2] = ((data[index + 2] & 0xFF) * 256 + (data[index + 3] & 0xFF));
        // 解析甲醛
        result[3] = ((data[index + 4] & 0xFF) * 256 + (data[index + 5] & 0xFF));
        // 解析TVOC
        result[4] = ((data[index + 6] & 0xFF) * 256 + (data[index + 7] & 0xFF));
        // 解析PM2.5
        result[5] = ((data[index + 8] & 0xFF) * 256 + (data[index + 9] & 0xFF));
        // 解析PM10
        result[6] = ((data[index + 10] & 0xFF) * 256 + (data[index + 11] & 0xFF));

        return result;
    }
}
